package br.com.velp.sudecap.entidade;

import br.com.velp.sudecap.enumerator.SituacaoEmpreendimentoEnum;
import java.util.Date;
import javax.persistence.*;

/**
 * <sumario>
 * <objetivo> "Rastreabilidade" </objetivo>
 * <autor> EDUARDO SANTOS DE OLIVEIRA </autor>
 * <versao>1.0.0.0</versao>
 * <data_criacao> 17.10.2012 </data_criacao>
 * <data_ultima_alteracao> N/A </data_ultima_alteracao>
 * <requisitos_afetados> RF003.01 - Listar Empreendimentos / RF003.02 - Cadastrar Empreendimentos </requisitos_afetados>
 * <descricao> Bean Responsável Pelo Mapeamento da Tabela EMPREENDIMENTO </descricao>
 * </sumario>
 */
@Entity
@Table(name = "Empreendimento")
public class Empreendimento extends EntityBase {

    public static final Long serialVersionUID = 1l;
    @Id
    @SequenceGenerator(name = "SQ_ID_EMP", sequenceName = "SQ_ID_EMP", allocationSize = 1)
    @GeneratedValue(generator = "SQ_ID_EMP")
    @Column(name = "id_Empreendimento", nullable = false, unique = true)
    private Long id;
    
    @Column(name = "Usu_cadastro")
    private Long idUsuarioCadastro;
    
    @Column(name = "Usu_alteracao")
    private Long idUsuarioAlteracao;
    
    @Column(name = "Nome", length = 150, nullable = false)
    private String nome;
    
    @Column(name = "Trecho", length = 50)
    private String trecho;
    
    @Column(name = "Programa", length = 100)
    private String programa;
    
    @Column(name = "Situacao", length = 2)
    private String situacao;
    @Column(name = "Escopo", length = 4000, nullable = false)
    private String escopo;
    @Column(name = "Codigo_XPLAN", length = 20)
    private String codigoXplan;
    @Column(name = "Obs", length = 4000)
    private String observacao;
    @Column(name = "Solicitante", length = 150)
    private String solicitante;
    @Column(name = "Resp_Amb", length = 150)
    private String responsavelEstudoAmbiental;
    @Column(name = "Resp_Urb", length = 150)
    private String responsavelEstudoUrbanismo;
    @Column(name = "Resp_Via", length = 150)
    private String responsavelEstudoViabilidade;
    @Column(name = "Data_inicio")
    @Temporal(TemporalType.DATE)
    private Date dataInicio;
    @Column(name = "Data_termino")
    @Temporal(TemporalType.DATE)
    private Date dataTermino;
    @Column(name = "Data_prevista_term")
    @Temporal(TemporalType.DATE)
    private Date dataPrevistaTermino;
    @Column(name = "Data_cadastro", nullable = false)
    @Temporal(TemporalType.TIMESTAMP)
    private Date dataCadastro;
    @Column(name = "Data_alteracao")
    @Temporal(TemporalType.TIMESTAMP)
    private Date dataAlteracao;
    @Column(name = "Data_Urb")
    @Temporal(TemporalType.DATE)
    private Date dataEstudoUrbanismo;
    @Column(name = "Data_Amb")
    @Temporal(TemporalType.DATE)
    private Date dataEstudoAmbiental;
    @Column(name = "Data_Via")
    @Temporal(TemporalType.DATE)
    private Date dataEstudoViabilidade;
    @ManyToOne
    @JoinColumn(name = "id_Regional")
    private Regional regional;

    public Empreendimento() {
    }

    public Empreendimento(Long id) {
	this.id = id;
    }

    public Long getId() {
	return id;
    }

    public void setId(Long id) {
	this.id = id;
    }

    public Long getIdUsuarioAlteracao() {
	return idUsuarioAlteracao;
    }

    public void setIdUsuarioAlteracao(Long idUsuarioAlteracao) {
	this.idUsuarioAlteracao = idUsuarioAlteracao;
    }

    public Long getIdUsuarioCadastro() {
	return idUsuarioCadastro;
    }

    public void setIdUsuarioCadastro(Long idUsuarioCadastro) {
	this.idUsuarioCadastro = idUsuarioCadastro;
    }

    public String getNome() {
	return nome;
    }

    public void setNome(String nome) {
	this.nome = nome;
    }

    public String getPrograma() {
	return programa;
    }

    public void setPrograma(String programa) {
	this.programa = programa;
    }

    public String getSituacao() {
	return situacao;
    }
    
    public String getSituacaoStr(){
	return SituacaoEmpreendimentoEnum.getLabel(getSituacao());
    }

    public void setSituacao(String situacao) {
	this.situacao = situacao;
    }

    public String getCodigoXplan() {
	return codigoXplan;
    }

    public void setCodigoXplan(String codigoXplan) {
	this.codigoXplan = codigoXplan;
    }

    public String getEscopo() {
	return escopo;
    }

    public void setEscopo(String escopo) {
	this.escopo = escopo;
    }

    public String getObservacao() {
	return observacao;
    }

    public void setObservacao(String observacao) {
	this.observacao = observacao;
    }

    public String getResponsavelEstudoAmbiental() {
	return responsavelEstudoAmbiental;
    }

    public void setResponsavelEstudoAmbiental(String responsavelEstudoAmbiental) {
	this.responsavelEstudoAmbiental = responsavelEstudoAmbiental;
    }

    public String getResponsavelEstudoUrbanismo() {
	return responsavelEstudoUrbanismo;
    }

    public void setResponsavelEstudoUrbanismo(String responsavelEstudoUrbanismo) {
	this.responsavelEstudoUrbanismo = responsavelEstudoUrbanismo;
    }

    public String getResponsavelEstudoViabilidade() {
	return responsavelEstudoViabilidade;
    }

    public void setResponsavelEstudoViabilidade(String responsavelEstudoViabilidade) {
	this.responsavelEstudoViabilidade = responsavelEstudoViabilidade;
    }

    public String getSolicitante() {
	return solicitante;
    }

    public void setSolicitante(String solicitante) {
	this.solicitante = solicitante;
    }

    public String getTrecho() {
	return trecho;
    }

    public void setTrecho(String trecho) {
	this.trecho = trecho;
    }

    public Date getDataAlteracao() {
	return dataAlteracao;
    }

    public void setDataAlteracao(Date dataAlteracao) {
	this.dataAlteracao = dataAlteracao;
    }

    public Date getDataCadastro() {
	return dataCadastro;
    }

    public void setDataCadastro(Date dataCadastro) {
	this.dataCadastro = dataCadastro;
    }

    public Date getDataEstudoAmbiental() {
	return dataEstudoAmbiental;
    }

    public void setDataEstudoAmbiental(Date dataEstudoAmbiental) {
	this.dataEstudoAmbiental = dataEstudoAmbiental;
    }

    public Date getDataEstudoUrbanismo() {
	return dataEstudoUrbanismo;
    }

    public void setDataEstudoUrbanismo(Date dataEstudoUrbanismo) {
	this.dataEstudoUrbanismo = dataEstudoUrbanismo;
    }

    public Date getDataEstudoViabilidade() {
	return dataEstudoViabilidade;
    }

    public void setDataEstudoViabilidade(Date dataEstudoViabilidade) {
	this.dataEstudoViabilidade = dataEstudoViabilidade;
    }

    public Date getDataInicio() {
	return dataInicio;
    }

    public void setDataInicio(Date dataInicio) {
	this.dataInicio = dataInicio;
    }

    public Date getDataPrevistaTermino() {
	return dataPrevistaTermino;
    }

    public void setDataPrevistaTermino(Date dataPrevistaTermino) {
	this.dataPrevistaTermino = dataPrevistaTermino;
    }

    public Date getDataTermino() {
	return dataTermino;
    }

    public void setDataTermino(Date dataTermino) {
	this.dataTermino = dataTermino;
    }

    public Regional getRegional() {
	return regional;
    }

    public void setRegional(Regional regional) {
	this.regional = regional;
    }

    public Long getIdRegional() {
	return getRegional() != null ? getRegional().getId() : null;
    }

    public void setIdRegional(Long idRegional) {
	if (idRegional != null) {
	    setRegional(new Regional(idRegional));
	} else {
	    setRegional(null);
	}
    }

    @Override
    public boolean equals(Object obj) {
	return genericEquals(obj);
    }

    @Override
    public int hashCode() {
	int hash = 3;
	hash = 41 * hash + (this.id != null ? this.id.hashCode() : 0);
	return hash;
    }
}
